import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;


public class Lession14LinkedHashMap {
	  public static void main(String[] args) {
		    // 分别使用2个类，进行相同的数据测试
		    // 可以看到，HashMap的顺序是不可预测的
		    // 而LinkedHashMap的顺序严格按照插入顺序

		    // 102=>102; 100=>100; 101=>101; 98=>98; 99=>99;
		    testMap(new HashMap());
		    // 98=>98; 99=>99; 100=>100; 101=>101; 102=>102;
		    testMap(new LinkedHashMap());
		    
		    // 删除数据后，LinkedHashMap会将数据放到末尾最后的位置
		    // 而HashMap可能会使用前一个空缺的位置
		  }

		  public static void testMap(Map map) {
		    for (int i = 98; i <= 102; i++) {
		      map.put(i, i);
		    }
		    showMap(map);
		    // 尝试重复插入数据
		    map.put(100, 100);
		    showMap(map);

		    // 删除数据，并再次插入
		    map.remove(100);
		    map.put(100, 100);
		    showMap(map);
		  }

		  public static void showMap(Map map) {
		    // 迭代Key的操作
		    Iterator it = map.keySet().iterator();
		    Object key;
		    while (it.hasNext()) {
		      key = it.next();
		      System.out.print(key + "=>" + map.get(key) + "; ");
		    }
		    System.out.println();
		  }
		  }
